import Vue from 'vue'
import Vuex from 'vuex'
//导入modules中的文件
import user from './modules/user'
import setting from './modules/setting'
Vue.use(Vuex)

export default new Vuex.Store({
  strict: true,//代码严格模式,必须按照它的语法执行
  state: {
    /*定义数据*/
    count: 100,
    name: '小明',
    list: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
  },
  mutations: {
    // 更改state中的数据只能通过mutations更改,==执行同步操作
    addheader (state, arr) {
      // 第一个参数是当前store的state属性
      // 第二个参数是运输参数,调用mutaiions的时候 可以传递参数 传递载荷
      state.count += arr.reduce((pre, next) => {
        return pre + next
      })
      console.log(state);
    },

    addheader2 (state, arr) {
      state.count += arr.reduce((pre, next) => {
        return pre + next
      })
    },



  },
  actions: {
    //执行异步操作
    syncaddheader (Context, arr) {
      /*
      Context可以拿到veux中的关键方法,此时可以随意调用
      mutations中的方法
      */
      setTimeout(() => {
        // console.log('我是actions的异步操作');
        Context.commit('addheader2', arr)
        console.log(Context);
      }, 1000)
    }

  },
  //计算属性,可以计算state中的数据
  getters: {
    sum (state) {
      return state.list.reduce((pre, next) => {
        return pre + next
      })
    }
  },
  modules: {
    /* 属性名:导入的模块名 */
    user,
    setting
  }
})
